//配置axios的前缀
axios.defaults.baseURL = 'http://localhost:8080/'
//把axios配置为全局变量
Vue.prototype.$http = axios //给Vue这个类添加一个原型的属性,这个类的对象都能调用
//屏蔽vue的警告
Vue.config.productionTip = false


//common.js
//====axios的前置拦截器:作用，每次访问后台【都是使用axios发送请求的】，都要将token携带到后端====
axios.interceptors.request.use(res => {
    //从浏览器中获取token
    let token = localStorage.getItem("token");
    if (token) {
        //将token添加到请求头
        res.headers["token"] = token;
    }
    return res;//语法格式，必须返回
})
//======================axios的前置拦截器====================//
//====axios的后置拦截器：作用，对后端响应的错误的json数据【没有登录，获取过期】做处理====
axios.interceptors.response.use(res => {
    //后端响应的是没有登录的信息
    if (!res.data.success && "noLogin" === res.data.message) {
        localStorage.removeItem("token");
        localStorage.removeItem("user");
        location.href = "/login.html";
    }
    return res;
})
//======================axios的后置拦截器====================//
//====前端拦截器：拦截不经过后端代码的请求【前端的有些页面是需要登录之后才能访问的】====
let url = location.href;
// http://localhost/index.html//如果不是登录页面并且也不是注册页面【为了测试：假如index.html是需要登录之后才能访问的】
// indexOf 这个方法  去匹配()里面值和原数据里面是否有一样的 没有有返回-1 有就返回对应的索引下标
if(url.indexOf("bind.html")==-1 &&url.indexOf("callback.html")==-1 && url.indexOf("login.html")==-1 && url.indexOf("register.html")==-1 && url.indexOf("index.html")==-1){
    let user = localStorage.getItem("user");
    if(!user){//如果访问的不是登录页面和注册页面，并且loginInfo没有值【没有登录或过期】
        location.href = "/login.html";
    }
}
//==========================前端拦截器=======================//

//封装公用方法 - 将字符串的参数解析为json对象
function parseUrlParams2Obj(url) {//xxx?code=xxx&state=1&xxx=vvv
    let paramStr = url.substring(url.indexOf("?")+1);//code=xxx&state=1
    let paramArr = paramStr.split("&");//[code=xxx,state=1]
    let paramObj = {};
    for(let i = 0;i<paramArr.length;i++){
        let paramTemp = paramArr[i];//code=xxx
        let paramName = paramTemp.split("=")[0];//code
        let paramValue= paramTemp.split("=")[1];//xxx
        paramObj[paramName] = paramValue;//{code:xxx,state:1}
    }
    return paramObj;
}